package Modelo;
import java.util.Map;
import java.util.HashMap;


// <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
// #[regen=yes,id=DCE.2D272784-78D8-D72D-89D4-10751F288729]
// </editor-fold> 
public class Empresa {
    /* ATRIBUTOS */

    private String nombre;
    private long cuit;
    private Map<Integer,Pasajero> pasajeros;
    private Map<Integer,Pasaje> pasajes;
    private Map<Integer,Servicio> servicios;
    private Map<Integer,Empleado> empleados;
    private Map<Integer,Embarcacion> embarcaciones;

    /* CONSTRUCTOR */
    public Empresa() {
        this.embarcaciones=new HashMap<Integer,Embarcacion>();
        this.empleados=new HashMap<Integer,Empleado>();
        this.pasajeros=new HashMap<Integer,Pasajero>();
        this.pasajes=new HashMap<Integer,Pasaje>();
        this.servicios=new HashMap<Integer,Servicio>();
    }

    public Empresa(String nombre, long cuit) {
    }

    /* METODOS */
    
    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public long getCuit() {
        return cuit;
    }

    public void setCuit(long cuit) {
        this.cuit = cuit;
    }
    
    //EMBARCACION
    public void AltaEmbarcacion(Embarcacion unaEmbarcacion) throws Error {
        if (!this.embarcaciones.containsKey(unaEmbarcacion.getId())) {
            this.embarcaciones.put(unaEmbarcacion.getId(), unaEmbarcacion);
        } else {
            throw new Error("No se pudo agregar la embarcacion");
        }
    }

    public void BajaEmbarcacion(int idEmbarcacion) throws Error {
        if (this.embarcaciones.containsKey(idEmbarcacion)) {
            this.embarcaciones.remove(idEmbarcacion);
        } else {
            throw new Error("No se encontro la embarcacion");
        }
    }

    public Embarcacion BuscarEmbarcacion(int idEmbarcacion) throws Error {
        Embarcacion unaEmbarcacion = null;
        if (this.embarcaciones.containsKey(idEmbarcacion)) {
            unaEmbarcacion = this.embarcaciones.get(idEmbarcacion);
        } else {
            throw new Error("No se encontro la embarcacion");
        }
        return unaEmbarcacion;
    }

    public void ModificarEmbarcacion(int idEmbarcacion,  String nombre, int modelo, String marca, int velmax, int capacidad) throws Error {
        this.BuscarEmbarcacion(idEmbarcacion).ModificarEmbarcacion(nombre, modelo, marca, velmax, capacidad);

    }
  
       
    
    //EMPLEADO
    
    public void AltaEmpleado(Empleado unEmpleado) throws Error {
        if (!this.empleados.containsKey(unEmpleado.getDni())) {
            this.empleados.put(unEmpleado.getDni(), unEmpleado);
        } else {
            throw new Error("No se pudo agregar el empleado");
        }
    }

    public void BajaEmpleado(int dniEmpleado) throws Error {
        if (this.empleados.containsKey(dniEmpleado)) {
            this.empleados.remove(dniEmpleado);
        } else {
            throw new Error("No se encontro el empleado");
        }
    }

    public Empleado BuscarEmpleado(int dniEmpleado) throws Error {
        Empleado unEmpleado = null;
        if (this.empleados.containsKey(dniEmpleado)) {
            unEmpleado = this.empleados.get(dniEmpleado);
        } else {
            throw new Error("No se encontro el empleado");
        }
        return unEmpleado;
    }

    public void ModificarEmpleado(String nombre, int dniEmpleado, int edad) throws Error {
        this.BuscarEmpleado(dniEmpleado).ModificarEmpleado(nombre, edad);

    }
  
    
    
    //SERVICIO
    
    
    

}